1. The Field of the Invention
The present invention relates to browser navigation technology. More specifically, the present invention relates to mechanisms for preserving application state used to dynamically create web pages in a way that allows a previously viewed web page to be recreated correctly if forward navigation brings the user back to that web page, while still supporting backward navigation.
2. Background and Related Art
Computing and networking technology has transformed the way we work and play. Networks have become so prolific that a simple network-enabled computing system may communicate with any one of millions of other computing systems spread throughout the globe over a conglomeration of networks often referred to as the “Internet”. Such computing systems may include desktop, laptop, or tablet personal computers; Personal Digital Assistants (PDAs); telephones; or any other computer or device capable of communicating data over a network.
A browser, when implemented on a network-enabled computing system, is capable of navigating through web pages. The browser displays each web page to the user and, depending on the web page, may allow the user to enter information into the web page, or select a hyperlink in the web page to cause the browser to navigate to another web page. The user may also typically use the browser to directly enter a web site address to go directly to the web page without selecting a hyperlink.
Typically, there is state information (hereinafter also referred to as “application state”) that is maintained by the host computing system that hosts a web page in order to support the proper interface of the web page with the user. For example, suppose that the web page allows the user to compose an e-mail message. The information that the user enters into various fields of the e-mail composition form may be part of the application state that is stored by the host computing system.
Most browsers have the ability to backwards navigate. In other words, the browser caches pages viewed by the user and, by selecting a back button on the browser, can return the user to the immediately prior web page that was displayed to the user, without necessarily contacting the server. Sometimes, a host computing system may only store application state for a current web page navigated to by the browser. Accordingly, when the user presses the back button, the browser presents the previously displayed web page using locally cached application state. If the user then selects a link on that prior web page, a browser will transmit a request to the host computing system based on that prior web page. The server may not be able to correctly service this request since the application state for the prior web page may no be longer available, and thus the data being acting upon may be in an incorrect state for the requested action.
In order to improve the user experience when returning to a web page that was previously navigated to (either through backward navigation or perhaps even by forward navigating to the same web page), the host computing system often preserves application state for a limited number of most recently navigated web pages. Accordingly, when the user backward navigates to a recent web page or navigates forward returning to a web page that was recently navigated to, the saved application state information is used to supplement the rendering of that web page.
The number of prior web pages for which the host computing system saves application state for a given browser will be limited even if the host computing system has robust memory resources because the host computing system may often serve an enormous number of browsers, any one of which being capable of navigating to enormous numbers of web pages. Accordingly, the memory in which the application state is placed is subject to recycling rules in which the application state will be discarded at some point.
This queuing mechanism works well except if the browser is to return to a web page that has application state that has been eliminated due to the recycling rules. There are cases in which a browser will predictably go back to a particular web page after having performed a task that requires navigation to a number of other web pages.
For example, suppose that a browser has browsed to a web page that includes the user's e-mail inbox. Now suppose the user selects a button indicating that the user is to compose an e-mail. Typically, in a laptop or desktop computer that has sophisticated and spacious display capability, the e-mail composition form may be displayed in a single view. However, there are many computing systems with browsers that have far more limited display capabilities. For example, a mobile telephone or PDA with browser capability may typically display much less information. Due to this limited capability, an e-mail composition form may be displayed in multiple views, one being displayed after the other. Accordingly, composition of the e-mail may involve navigation to a number of web pages before returning to the original in-box web page. If the recycling rules were to cause the host computing system to drop the application state for the in-box web page prior to returning to the in-box web page, then the rendering of the in-box would be affected thereby degrading performance.
Accordingly, what would be advantageous is a way of preserving application state for web pages that are to be returned to once a task is completed even if the host computing system limits the number of prior web pages for which it preserves application state for a given browser. It would further be advantageous if the application state was stored in such a way that allows the user to navigate back to prior web pages without breaking the web site's functionality.